Simulators may use binary translation to translate a target machine instruction into one or more host machine instructions. These translated instructions may enable the simulated program (after translation) to execute natively, e.g., directly on the host processor. The simulator may invoke the binary translator only for a part of the application actually executed by the processor.
Binary translation may be used to develop an instruction set architecture (ISA) for a new processor, since the ISA of the new processor may be different from the ISA of the host processor on which the simulator runs. Binary translation may also be used to port legacy code from a legacy ISA to a new architecture.